package DAO;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import bean.RodamientoTO;
import Hibernate.HibernateUtil;
import Modelo.Cliente;
import Modelo.Rodamiento;

public class RodamientoDAO {
	
	private static RodamientoDAO instancia = null;
	private static SessionFactory sf = null;

	public static RodamientoDAO getInstance() {
		if (instancia == null)
			instancia = new RodamientoDAO();
		return instancia;
	}
	
	protected RodamientoDAO (){
		super();
		sf = HibernateUtil.getSessionFactory();
	}

	public boolean existeRodamiento(RodamientoTO r) {
		
		Session s = sf.openSession();
		String consulta = "SELECT r FROM Rodamiento r WHERE r.codigo = (:cod)";
		Query query = s.createQuery(consulta);
		query.setParameter("cod", r.getCodigo());
		
		Rodamiento rod = (Rodamiento) query.uniqueResult();
		
		return (rod!=null);
	}

	public Rodamiento obtenerRodamiento(RodamientoTO r) {
		
		Session s = sf.openSession();
		String consulta = "SELECT r FROM Rodamiento r WHERE r.codigo = (:cod)";
		Query query = s.createQuery(consulta);
		query.setParameter("cod", r.getCodigo());
		
		Rodamiento rod = (Rodamiento) query.uniqueResult();
		
		
		return rod;
	}

	public void altaRodamiento(RodamientoTO r) {
		
		Session s = sf.openSession();
		
		Rodamiento rod = new Rodamiento();
		
		rod.setCaracteristica(r.getCaracteristica());
		rod.setCod_propietario(r.getCod_propietario());
		rod.setCodigo(r.getCodigo());
		rod.setMarca(r.getMarca());
		rod.setMedida_b(r.getMedida_b());
		rod.setMedida_B(r.getMedida_B());
		rod.setMedida_h(r.getMedida_h());
		rod.setOrigen(r.getOrigen());
		rod.setStock(null);
		rod.setTipo(r.getTipo());
		
		s.beginTransaction();
		s.persist(rod);
		s.getTransaction().commit();
		
		
	}

	public void modificarRodamiento(RodamientoTO r) {
		
		//mismas dudas que con todos los modifiar anteriores!
		
	}

	public List<Rodamiento> obtenerRodamientos() {
		
		Session s = sf.openSession();
		
		String consulta = "FROM Rodamiento";
		
		Query query = s.createQuery(consulta);

		List <Rodamiento> lista = new ArrayList<Rodamiento>();
		
		lista = query.list();
		
		return lista;
	}



}
